package com.jpress.ejb;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import com.jpress.model.PessoaNewsletter;
import com.jpress.remote.PessoaNewsletterRemote;

@Stateless(mappedName="bean/pessoanewsletter")
public class PessoaNewsletterEJB implements PessoaNewsletterRemote{

	@PersistenceContext(unitName="jpressEE")
	private EntityManager entityManager;
	
	@Override
	public void inserir(PessoaNewsletter pessoaNewsletter) throws Exception{
		try {
			entityManager.persist(pessoaNewsletter);
		} catch (Exception e) {
			throw e;
		}
	}

	@Override
	public void atualizar(PessoaNewsletter pessoaNewsletter) throws Exception {
		try {
			entityManager.merge(pessoaNewsletter);
		} catch (Exception e) {
			throw e;
		}
	}

	@Override
	public void excluir(PessoaNewsletter pessoaNewsletter) throws Exception {
		try {
			entityManager.remove(pessoaNewsletter);
		} catch (Exception e) {
			throw e;
		}
	}

	@Override
	public PessoaNewsletter findByEmail(String email){
		Query query = entityManager.createNamedQuery("PessoaNewsletter.findByEmail");
		query.setParameter("email", email);
		@SuppressWarnings("unchecked")
		List<PessoaNewsletter> resultado = (List<PessoaNewsletter>) query.getResultList();
		if(resultado.size() == 1)
			return resultado.get(0);
		return null;
	}

	@Override
	public List<PessoaNewsletter> pesquisar(String nome, String email) {
		Query query = entityManager.createNamedQuery("PessoaNewsletter.pesquisar");
		query.setParameter("nome", "%" + nome + "%");
		query.setParameter("email", "%" + email + "%");
		@SuppressWarnings("unchecked")
		List<PessoaNewsletter> resultado = (List<PessoaNewsletter>) query.getResultList();
		return resultado;
	}
	
}
